
# 猜拳游戏
# 让电脑随机生成一个整数，代表['石头', '剪刀', '布'] 中的一种。
# 让用户输入要猜的拳：
# 0) 石头
# 1) 剪刀
# 2) 布
# 3) 退出猜拳
# 循环猜拳，每次打印出计算机猜的是什么，你出的是什么，打印出输赢结果。
# 当用户输入3不在猜拳，退出程序。

import random
import time

def show_menu():
    '''显示操作的菜单'''
    print(" 0) 石头 ")
    print(" 1) 剪刀 ")
    print(" 2) 布 ")
    print(" 3) 退出猜拳 ")

def guess_signal_game():
    '''此处完成猜拳游戏的逻辑'''
    signals = ['石头', '剪刀', '布']
    while True:
        # 1. 让电脑随机生成一个整数 0～2 的整数，代表手势
        computer_select = random.randint(0, 2)  # 电脑出的手势
        # 2. 显示菜单
        show_menu()
        # 3. 让用户输入选项
        select = input('请选择：')
        if select == '3':
            break
        elif not (0 <= int(select) <= 2):
            print('您的输入有误，请重新输入!')
            continue
        # 4. 判断输赢
        your_select = int(select)  # 转为索引
        # 4.1 创建一个对应表，-1：代表输，0：代笔平局，1：代表赢
        #       结果       0      1    -1
        result_table = ['平局', '赢', '输']
        result = -1  # 默认是'输' result 变量用于保存比赛结果
        # 建立一张二维表格，确定输赢关系
        #  人的选择   0,  1,  2
        pk_table = [[ 0, -1,  1],  # 0,电脑选择 石头
                    [ 1,  0, -1],  # 1,电脑选择 剪刀
                    [-1,  1,  0]]  # 2,电脑选择 布
        result = pk_table[computer_select][your_select]
        print(f'你出的是{signals[your_select]}, 电脑出的是{signals[computer_select]}, 结果：{result_table[result]}' )
        time.sleep(2)
        # signals = ['石头', '剪刀', '布']


def play_game():
    '''此函数是外部调用猜拳游戏的接口，
    要玩此游戏就调用函数
    '''
    guess_signal_game()

if __name__ == '__main__':
    play_game()
